const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

/**
 * 时间戳转化为年 月 日 时 分 秒
 * time : 传入时间 2018-07-26 17:58:54
 * format：返回格式，支持自定义，但参数必须与formateArr里保持一致
*/
const formatToTime=function(time, format) {

  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];

  //var 
  var time = time.replace(/-/g, '/');
  var date = Date.parse(time);
  date = new Date(date);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));

  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}

const timeChangeover=function(time) {
  var result;
  var minute = 1000 * 60;
  var hour = minute * 60;
  var day = hour * 24;
  var halfamonth = day * 15;
  var month = day * 30;
  var now = new Date().getTime();
  // time = time.replace(/-/g, '/');
  var dateTimeStamp = time// Date.parse(time);
  var diffValue = now - dateTimeStamp;
  if (diffValue < 0) {
    return;
  }
  var monthC = diffValue / month;
  var weekC = diffValue / (7 * day);
  var dayC = diffValue / day;
  var hourC = diffValue / hour;
  var minC = diffValue / minute;
  if (monthC >= 1) {
    if (monthC <= 12) {
      result = "" + parseInt(monthC) + "月前";
    }
    else {
      result = "" + parseInt(monthC / 12) + "年前";
    }
  }
  else if (weekC >= 1) {
    result = "" + parseInt(weekC) + "周前";
  }
  else if (dayC >= 1) {
    result = "" + parseInt(dayC) + "天前";
  }
  else if (hourC >= 1) {
    result = "" + parseInt(hourC) + "小时前";
  }
  else if (minC >= 1) {
    result = "" + parseInt(minC) + "分钟前";
  } else {
    result = "刚刚";
  }
  return result;
}

const readingTime = function (time) {
  var result;
  
  if (time >= 60) {
    result = "" + Math.ceil(time / 60) + "分钟";
  }
  else{
    result = "" + parseInt(time) + "秒";
  }
  return result;
}

// 时间戳转年月日
const timestampToYMD = function (unixtime, format) {
  var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  var returnArr = [];

  var dateTime = new Date(parseInt(unixtime))
  var year = dateTime.getFullYear();
  var month = dateTime.getMonth() + 1;
  var day = dateTime.getDate();
  var hour = dateTime.getHours();
  var minute = dateTime.getMinutes();
  var second = dateTime.getSeconds();

  returnArr.push(year);
  returnArr.push(month<10?'0'+month:month);
  returnArr.push(day < 10 ? '0' + day : day);

  returnArr.push(hour < 10 ? '0' + hour : hour);
  returnArr.push(minute < 10 ? '0' + minute : minute);
  returnArr.push(second < 10 ? '0' + second : second);

  for (var i in returnArr) {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}
const timePeisZh = function (time) {
  var tdayKsTime = new Date(new Date().setHours(0, 0, 0, 0)).getTime();//当天0点
  var maxTime=tdayKsTime+24*3600*1000;//当天最大时间戳，用于判断是否为当天
  var result;
  if(time<maxTime){
    //当天
    result = timestampToYMD(time,'h:m')
  }else{
    //隔天
    result = timestampToYMD(time, 'M-D h:m');
  }
  return result;
}

//获取开始配送最小时间
const timePeisStartMin = function () {
  var dateTime = new Date()
  var minute = dateTime.getMinutes();

  var cz = 60 - minute;

  var now = dateTime.getTime();

  return now + cz * 60 * 1000 + 3600 * 1000;
}

module.exports = {
  formatTime: formatTime,
  formatToTime: formatToTime,
  timeChangeover: timeChangeover,
  readingTime: readingTime,
  timePeisZh: timePeisZh,
  timestampToYMD: timestampToYMD,
  timePeisStartMin: timePeisStartMin
}
